<style>
#ModuleMenuTable{
	margin: 4px 0px;
}
#HistoryModuleDiv{
	margin: 24px;
	min-height: 200px;
}
#QueryModuleButton{
	margin-left: 8px;
}
#ReloadConfigButton{
	color: #D00;
	margin-left: 32px;
}
#RestartSystemButton{
	color: #D00;
	margin-left: 9px;
}
</style>

<div id='ModuleListDiv'>
	<table id='ModuleMenuTable'>
		<tr>
			<td>
				<v-text id='ModulePathText' title='模块路径'></v-text>
				<v-button id='QueryModuleButton' title='查询'></v-button>
				<v-button id='ReloadConfigButton' title='更新服务'></v-button>
				<v-button id='RestartSystemButton' title='重启服务'></v-button>
			</td>
		</tr>
	</table>
</div>

<script>
getVue('ModuleMenuTable');

var vmdata = {
	title: {
		path: '模块路径',
		size: '模块大小',
		utime: centerText('更新时间', 'bold')
	},
	check: function(data){
		data.list.sort(function(a, b){
			if (a.path == b.path) return 0;
			return a.path > b.path ? 1 : -1;
		});
	},
	filter: {
		utime: centerText
	},
	button: [{
			title: '更新',
			click: function(data){
				updateFileItem(data);
			}
		},{
			title: '历史',
			click: function(data){
				showHistoryItem(data);
			}
		}
	],
	pagesize: 10000
};

var listview = new RecordListView('ModuleListDiv', '/getmodulelist', vmdata, function(){
	return {path: $('#ModulePathText').val(), host: getParameter('host'), port: getParameter('port')};
});

$('#ModulePathText').keyup(function(){
	$(this).val($(this).val().toLowerCase());
	listview.reload(false);
});

$('#QueryModuleButton').click(function(){
	listview.reload(true);
});

$('#ReloadConfigButton').click(function(){
	showConfirmMessage('是否决定更新服务配置？', '更新服务', function(flag){
		if (flag){
			showToastMessage('正在更新服务配置...', true);

			getHttpResult('/execmodule', {cmd: 'reload', host: getParameter('host'), port: getParameter('port')}, function(data){
				if (data.code ==  XG_TIMEOUT){
					sessionTimeout();
				}
				else if (data.code == XG_AUTHFAIL){
					showNoAccessToast();
				}
				else if (data.code < 0){
					showToast('更新服务配置失败');
				}
				else{
					showToast('更新服务配置成功');
				}
			});
		}
	});
});

$('#RestartSystemButton').click(function(){
	showConfirmMessage('是否决定重启应用服务？', '重启服务', function(flag){
		if (flag){
			showToastMessage('正在请求重启服务...', true);

			getHttpResult('/execmodule', {cmd: 'restart', host: getParameter('host'), port: getParameter('port')}, function(data){
				if (data.code ==  XG_TIMEOUT){
					sessionTimeout();
				}
				else if (data.code == XG_AUTHFAIL){
					showNoAccessToast();
				}
				else if (data.code < 0){
					showToast('服务重启失败');
				}
				else{
					showToast('服务已完成重启');
				}
			});
		}
	});
});

function updateModule(src, dest, revert){
	getHttpResult('/execmodule', {cmd: 'updatemodule', flag: revert ? 'R' : 'U', src: src, dest: dest, host: getParameter('host'), port: getParameter('port')}, function(data){
		if (data.code ==  XG_TIMEOUT){
			sessionTimeout();
		}
		else if (data.code == XG_AUTHFAIL){
			showNoAccessToast();
		}
		else if (data.code < 0){
			showToast('更新模块失败');
		}
		else{
			listview.reload(false);
			showToast('更新模块成功');
		}
	});
}

function updateFileItem(item){
	var url = '';
	var file = null;
	var path = item.path;
	var html = "<table class='DialogTable'><tr><td><v-text id='FileNameText' title='模块路径' placeholder='输入模块路径' maxlength='128'></v-text></td></tr><tr><td id='UploadFileDiv'></td></tr></table>";

	showConfirmMessage(html, '更新模块', function(flag){
		if (flag){
			if (strlen(url) == 0){
				setMessageErrorText('请选择要上传的文件', $('#UploadFileDiv input'));
				return false;
			}
			updateModule(url, path);
		}
	});

	var extname = getFileExtname(path);

	file = new UploadFileWidget('UploadFileDiv', '上传文件', '16px', 64 * 1024 * 1024);
	file.label.attr('size', 25).attr('placeholder', '点击选择文件');
	file.callback(function(data){
		if (data == null || data.code < 0){
			showErrorToast('文件上传失败');
		}
		else{
			url = data.url[0];
		}
	});

	$('#FileNameText').val(path.toLowerCase()).width(file.label.width());

	if (strlen(extname) > 0) file.setFilter('.' + extname);
}

function showHistoryItem(item){
	var path = item.path;

	var vmdata = {
		title: {
			utime: '历史版本',
			size: '模块大小',
		},
		check: function(data){
			data.list.sort(function(a, b){
				if (a.path == b.path) return 0;
				return a.path > b.path ? 1 : -1;
			});
		},
		button: [{
				title: '回退',
				click: function(data){
					showConfirmMessage('回退版本[' + data.utime + ']确认？', '版本回退', function(flag){
						if (flag) updateModule(data.path, path, true);
					});
				}
			}
		],
		pagesize: 10000
	};

	getHttpResult('/getmodulelist', {flag: 'H', path: path, host: getParameter('host'), port: getParameter('port')}, function(data){
		vmdata.list = data.list;
	});

	vmdata.pagecount = -1;

	if (vmdata.list == null || vmdata.list.length == 0){
		showToast('没有历史版本信息');
	}
	else{
		var box = showToastMessage("<div id='HistoryModuleDiv'></div>", true, null, null, true);
		new RecordListView('HistoryModuleDiv', null, vmdata);
		box.title("历史版本管理");
		box.center();
	}
}
</script>